package main

import "fmt"

/*
删除排序链表中的重复元素
给定一个已排序的链表的头 head ， 删除所有重复的元素，使每个元素只出现一次 。返回 已排序的链表 。

示例 1：
输入：head = [1,1,2]
输出：[1,2]

示例 2：
输入：head = [1,1,2,3,3]
输出：[1,2,3]
*/

type ListNode struct {
	Val  int
	Next *ListNode
}

func deleteDuplicates(head *ListNode) *ListNode {
	if head == nil {
		return nil
	}
	cur := head
	for cur.Next != nil {
		if cur.Val == cur.Next.Val {
			cur.Next = cur.Next.Next
		} else {
			cur = cur.Next
		}
	}
	return head
}

//AddNode 从末尾添加元素
func AddNode(head *ListNode, data *ListNode) {
	temp := head
	for {
		if temp.Next == nil {
			break
		}
		temp = temp.Next
	}
	temp.Next = data
}

func main() {
	//创造头节点
	head := &ListNode{}
	//创造新元素
	n1 := &ListNode{
		Val: 2,
	}
	n2 := &ListNode{
		Val: 4,
	}
	n3 := &ListNode{
		Val: 1,
	}

	//加入
	AddNode(head, n1)
	AddNode(head, n2)
	AddNode(head, n3)
	// //显示
	// ShowNode(head)
	fmt.Println(deleteDuplicates(n1))
}
